using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using ListasMusicales.Model;

namespace ListasMusicales.Controllers
{
    public class GestionCancionesController : Controller
    {

        ListasMusicalesEntities1 db = new ListasMusicalesEntities1();


        // GET: /GestionCanciones/Index
        public ActionResult Index() {

            ViewData.Model = db.CANCION.ToList();
            return View();
        }

        // GET: /GestionCanciones/IncluirCancionEnLista
        public ActionResult IncluirCancionEnLista()
        {

            var canciones = from cancion in db.CANCION
                            where !db.CONTENEDOR_CANCIONES.Any(p => p.CANCION.ID == cancion.ID)
                            select cancion;
         
            ViewData.Model = canciones.ToList();
            return View();
        }

        public ActionResult Buscar()
        {
            return View();
        }



        // GET: /GestionCanciones/EliminarCancion
        public ActionResult EliminarCancion()
        {

            var canciones = from cancion in db.CANCION
                            where !db.CONTENEDOR_CANCIONES.Any(p => p.CANCION.ID == cancion.ID)
                            select cancion;

            ViewData.Model = canciones.ToList();
            return View();

            
        }

        // GET: /GestionCanciones/Eliminar->Elimina la cancion de base de datos
        public ActionResult Eliminar(int id)
        {

            var cancion = db.CANCION.First(m => m.ID == id);
            db.DeleteObject(cancion);
            db.SaveChanges();

            return RedirectToAction("EliminarCancion");
        }

        // GET: /GestionCanciones/Editar
        public ActionResult Editar(int id)
        {
            var editarCancion = db.CANCION.First(m => m.ID == id);
            ViewData.Model = editarCancion;
            return View();
        }

        //
        // GET: /GestionCanciones/Detalles

        public ActionResult Detalles(int id)
        {
            var detallesCancion = db.CANCION.First(m =>  m.ID == id);
            ViewData.Model = detallesCancion;
            return View();
        }

        // GET: /GestionCanciones/Create
        public ActionResult Create()
        {
            return View();
        }

        public ActionResult Listas(int id)
        {

            Session["idCancion"] = id;
           
            ViewData.Model = db.LISTA.ToList();
            return View();
        }

        public ActionResult annadir(int id)
        {

            var idCancion = Session["idCancion"];

            var contenedor = new CONTENEDOR_CANCIONES();

            contenedor.ID = (from n in db.CONTENEDOR_CANCIONES select n.ID).Count()  + 1;

            var lista = db.LISTA.First(m => m.ID == id);

            contenedor.LISTA = lista;

            /*var cancion = from c in db.CANCION
                          where c.ID == Convert.ToInt32(idCancion)
                          select c;*/

            var cancion = db.CANCION.First(m => m.ID == id);
            contenedor.CANCION = cancion;

            try
            {
                db.AddToCONTENEDOR_CANCIONES(contenedor);
                db.SaveChanges();
                return View("CancionAnnadida");
            }
            
                catch
                {
                    return View();
                }

            //var editarCancion = db.CANCION.First(m => m.ID == idCancion);


            
        }

       
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(CANCION cancion)
        {
         
            if (ModelState.IsValid)
            {
                try
                {

                    //int numero = int.Parse(cancion.ID);
                    //cancion.DURACION = 3;
                   
                    db.AddToCANCION(cancion);
                    db.SaveChanges();

                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }

            return View();
           
        
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Buscar(CANCION cancion)
        {
            try
            {
                var canciones = from c in db.CANCION
                                where c.TITULO == cancion.TITULO || c.GENERO == cancion.CATEGORIA || c.GENERO == cancion.GENERO
                                select c;
                if (canciones != null)
                {
                    ViewData.Model = canciones.ToList();
                    return View("Resultados");
                }
                else
                    return View("NoResultados");
            }
            catch
            {
                return View();
            }
        }


        //
        // POST: /GestionCanciones/Create


        //
        // POST: /GestionCanciones/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
